using System;
using System.Collections.Generic;

namespace RomanJendrusz.Amazon.ETL.Repositories
{
    public interface IRepository<Entity, Key> where Entity : class 
    {
        Entity FindBy(Key entityKey);
        Entity FindBy(Func<Entity, bool> predicate);
        IList<Entity> FindAll();
        IList<Entity> Where(Func<Entity, bool> predicate);
        void Add(Entity item);
        void Add(IEnumerable<Entity> items);
        void Remove(Entity item);
        Entity AttachIfAllreadyExists(Entity item);
    }
}